// 索引类型本身是一种类型
// 索引访问类型是用来得到 其他类型的 某个 属性 的类型
    // 获取对象类型的属性的类型，是得到对应的属性的类型
type Person = { age: number; name: string; alive: boolean };
type Age = Person["age"] //type Age = number 
    type Age1 = Person["age"|"name"] //number|string
    
    type In = "age"|"name"
    type Age3= Person[In]
type Age2 = Person[keyof Person]  //number|string|boolean
const adas:Age2 = false

// 获取数组的属性的类型，固定语法,typeof js数组[number]，拿到 数组里面的 每个元素的 类型 的 联合类型
const MyArray = [   
    { name: "Alice", age: 15 },
    { name: "Bob", age: 23 },
    { name: "Eve", age: 38 },
  ];
  type adade =typeof MyArray[number] // type adade = {name:string,age:number}
  type asfa = adade["name"] //等价于type asfa =typeof MyArray[number]["name"]
  type asfa1 =typeof MyArray[number]["name"]
//   索引里面只能传入ts类型，但是不能传入js变量
// 索引语法 :
    // C类型 = A类型[B类型]    , B类型是索引    